package com.linsir.lin.service;

import com.linsir.core.BaseResponse;
import com.linsir.lin.dto.GridDTO;
import com.linsir.lin.dto.RoleDTO;
import com.linsir.lin.pojo.AccountRole;
import com.linsir.lin.pojo.BaseCode;
import com.linsir.lin.pojo.Role;

import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.util.List;

public interface RoleService {
    /**
     * 列表
     * @param page
     * @param limit
     * @param searchParams
     * @return
     */
    GridDTO<RoleDTO> grid(String page,
                       String limit,
                       String searchParams) throws IOException, InvocationTargetException, IllegalAccessException;

    /**
     * 根据账号寻找角色列表
     * @param accountRoles
     * @return
     */
    List<Role> roles(List<AccountRole> accountRoles);


    /**
     * 角色组
     * @return
     */
    List<BaseCode> roleGroup();


    /**
     * 获取改用户下橘色列表，兵确定哪些是选中的
     * @param accountId
     * @return
     */
    List<RoleDTO> getAccountAndCheck(Integer accountId) throws InvocationTargetException, IllegalAccessException;

    /**
     * 获取全部角色
     * @return
     */
    List<Role> allRole();

    /**
     *
     * @param role
     * @return
     */
   RoleDTO toDto(Role role) throws InvocationTargetException, IllegalAccessException;

    /**
     * 转化成list
     * @return
     */
   List<RoleDTO> toDtoList(List<Role> roleList) throws InvocationTargetException, IllegalAccessException;

    /**
     * 增加角色
     * @param role
     * @return
     */

    BaseResponse<Boolean> addOrUpdate(Role role);
}
